//
// Created by Otowa_kotori on 2016/9/25.
//

#ifndef AI9_LOGIC_2017_BASE_H
#define AI9_LOGIC_2017_BASE_H

#include <include/Game/Game.h>
#include "skill.h"
#include "Linktime.h"
namespace skill{
    class AbstractAttack: public CoolDownSkill{
    private:
    public:
        AbstractAttack(): CoolDownSkill(){
            this->turn = TurnName::AttackTurn;
            this->setName("AbstractAttack");
        }

        virtual bool canUse(Game *g, const std::vector<std::string> &params) override;
        virtual bool use(Game *g, const std::vector<std::string> &params) override;
    };
    class PlainAttack: public CoolDownSkill{
    public:
        PlainAttack(): CoolDownSkill(){
            this->setName("PlainAttack");
            this->cd = 1;
            this->turn = TurnName::AttackTurn;
        }
        virtual bool canUse(Game *g, const std::vector<std::string> &params) override;
        virtual bool use(Game *g, const std::vector<std::string> &params) override;
    };


    class Split: public CoolDownSkill {
    public:
        Split() : CoolDownSkill() {
            this->setName("Split");
            this->turn = AuxiliaryTurn;
            this->plainRange = SplitRange;
        }
        virtual bool canUse(Game *g, const std::vector<std::string> &params) override;

        virtual bool use(Game *g, const std::vector<std::string> &params) override;
    };
}

#endif //AI9_LOGIC_2017_BASE_H
